package com.bestcem.xm.member.controller.param.project;

import com.bestcem.xm.common.core.constant.RegTypes;
import com.bestcem.xm.member.controller.param.extendfield.ExtendFieldValueRequest;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;

/**
 * @author dc.wang <dc.wang@idiaoyan.com>
 * @version V1.0
 * @description 创建项目参数
 * @date 2021/8/5
 */
@Getter
@Setter
@ToString
public class CreateProjectRequest {
    /**
     * 联系人标识
     */
    @JsonProperty("mid")
    @NotBlank
    @Pattern(regexp = RegTypes.OBJECT_ID, message = "联系人标识格式错误")
    private String memberId;

    /**
     * 项目代码
     */
    @JsonProperty("m_project_code")
    private String code;

    /**
     * 项目名称
     */
    @JsonProperty("m_project_name")
    @NotBlank(message = "项目名称不能为空")
    @Size(max = 20, message = "项目名称最长20个字")
    private String name;

    /**
     * 立项类型
     */
    @JsonProperty("m_p_type")
    @Size(max = 8, message = "立项类型最长8个字")
    private String type;

    /**
     * 项目状态
     */
    @JsonProperty("m_p_status")
    private String status;

    /**
     * 客户经理名称
     */
    @JsonProperty("account_manager")
    private String accountManager;

    /**
     * 甲方项目经理名称
     */
    @JsonProperty("project_manager")
    @Size(max = 20, message = "甲方项目经理最长20个字")
    private String projectManager;

    /**
     * 项目经理手机号
     */
    @JsonProperty("project_manager_mobile")
    private String projectManagerMobile;

    /**
     * 合同编号
     */
    @JsonProperty("contractNo")
    @Size(max = 20, message = "合同编号最长20个字")
    private String contractNo;

    /**
     * 合同对象
     */
    @JsonProperty("contract_obj")
    @Size(max = 20, message = "合同对象最长20个字")
    private String contractObj;

    /**
     * 合同金额
     */
    @JsonProperty("contract_money")
    private long contractMoney;

    /**
     * 立项时间
     */
    @JsonProperty("project_time")
    @JsonFormat(pattern = "yyyy/MM/dd", timezone = "GMT+8")
    private Date projectTime;

    /**
     * 计划开始时间
     */
    @JsonProperty("program_start")
    @JsonFormat(pattern = "yyyy/MM/dd", timezone = "GMT+8")
    private Date programStartTime;

    /**
     * 实际开始时间
     */
    @JsonProperty("actual_start")
    @JsonFormat(pattern = "yyyy/MM/dd", timezone = "GMT+8")
    private Date actualStartTime;

    /**
     * 验收时间
     */
    @JsonFormat(pattern = "yyyy/MM/dd", timezone = "GMT+8")
    @JsonProperty("acceptance_time")
    private Date acceptanceTime;

    /**
     * 扩展字段值
     */
    @JsonProperty("field_val_list")
    private List<ExtendFieldValueRequest> extendFieldValues;
}
